ci: exercise BUILD_PACMAN_CLIENT=ON in its own job - #152
Merged
Conversation
autobuilds always sets it when publishing a real SDK, but every host job in this file leaves it at the default OFF, so the published configuration goes untested here. Add a linux-x86_64 job that turns it on, reusing stage 1's sysroot, and runs create-core-package.sh, create-bootstrap-archive.sh, validate-core-package.sh and the tests/package/test-*.sh suite against the result. Kept separate from the stage-2 matrix so its extra dependencies (Meson, a Pacman built from source) never touch the ten hosts already green there.
frangarcj
force-pushed
the
next-pacman-client-ci
branch
from
August 23, 2026 15:22
498ec66 to
b036a01
Compare
Two assumptions from the flat design no longer hold: a toolchain configure now requires a stage-1 SDK, and build-machine dependency projects no longer exist to leak target flags into (everything is imported). The test takes the stage-1 prefix from the environment (the pacman-client job hands over the one it already unpacked), declares the -static linker flag in its fake toolchain the way the real ones do, and asserts it reaches the host dependencies while no *_build project reappears. Verified end to end in an ubuntu:24.04 container against the CI stage-1 artifact before pushing.
frangarcj
force-pushed
the
next-pacman-client-ci
branch
from
August 23, 2026 16:30
bb0d631 to
27b0922
Compare
Pushing a branch with an open pull request built the same commit twice, one full ten-host matrix each. Grouping by the head commit cancels the superseded twin while keeping both trigger paths.
The published cores are moving to a glibc-2.31 build base; building the packaging-validation job in the same container proves that recipe in CI before publication depends on it. focal needs pip for cmake and meson (its own predate the package client's floors), and the bundle download moves from gh to plain curl since the container ships neither.
stage1, the Linux stage-2 legs and the pacman-client job now run in the same glibc-2.31 base the published cores are moving to, so the whole Linux half of the matrix validates what users actually receive. The containers ship no git, and a checkout without it silently degrades to a tarball with no .git, which broke the revision probe at configure -- git is installed before the checkout. Stage 3 stays on the runner: its outputs are Windows and FreeBSD binaries that no glibc floor touches, and its build tools come from the stage-2 SDK, which runs fine there.
The revision probe passes COMMAND_ERROR_IS_FATAL, a 3.19 feature, while the declared minimum said 3.16 -- focal's apt cmake exposed the lie. Declare 3.19 and give the containerized stage legs the same pinned pip cmake the pacman-client job already uses.
The workspace mount belongs to the runner uid while the container runs as root, and focal's git carries the safe.directory backport, so every git probe after checkout refused the repository.
A containerized job cannot drive the packaging tests: the docker CLI is absent and a sibling container's mounts resolve against the host, not the job container. Same answer as the musl legs: the job stays on the runner, only the build and the toolchain contract enter ubuntu:20.04 -- which is also exactly the shape autobuilds uses to publish, so the job validates the real thing. The revision and epoch travel in as -D values the way autobuilds passes them, sparing the container any git probing of the runner-owned checkout.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
autobuilds always publishes with
BUILD_PACMAN_CLIENT=ON, but no job in this repository ever built that configuration, which is how #151 could merge green while its own commit message admitted the packaging would fail until the vdpm tag moved. This adds a linux-x86_64 job that turns it on, reuses stage 1's sysroot, and runscreate-core-package.sh,create-bootstrap-archive.sh,validate-core-package.shand thetests/package/test-*.shsuite against the result — with the tag now at v0.1.2, it exercises the libexec layout end to end.Kept out of the stage-2 matrix so its extra dependencies (Meson, a Pacman built from source) never touch the ten hosts already green there.
AI tools were used in preparing this PR (Claude Sonnet 5 and Claude Fable 5, Anthropic).